package xyz.magicjson.core.annotation;

import java.lang.annotation.*;

/**
 * 标记一个方法为ESB服务端点，使其可以通过ESB被访问。
 * 
 * 示例：
 * <pre>
 * {@code
 * @Service
 * public class UserService {
 *     @ESBEndpoint(name = "getUserById", protocol = "http")
 *     public User getUserById(Long id) {
 *         // 实现省略
 *     }
 * }
 * }
 * </pre>
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ESBEndpoint {
    
    /**
     * 服务名称。如果未指定，将使用方法名作为服务名称。
     */
    String name() default "";
    
    /**
     * 服务描述。
     */
    String description() default "";
    
    /**
     * 支持的协议。默认为HTTP。
     */
    String protocol() default "http";
    
    /**
     * 服务版本。
     */
    String version() default "1.0.0";
    
    /**
     * 是否启用请求参数加密。
     */
    boolean enableEncryption() default false;
    
    /**
     * 是否启用日志记录。
     */
    boolean enableLogging() default true;
    
    /**
     * 是否需要认证。
     */
    boolean requiresAuth() default false;
    
    /**
     * 超时时间（毫秒）。默认为30秒。
     */
    long timeout() default 30000;
} 